fix(ci): eliminate image-tag race between concurrent workflows#1413
fix(ci): eliminate image-tag race between concurrent workflows#1413mesutoezdil wants to merge 1 commit into
Conversation
|
Thanks for taking this on. I do not think this closes #1343 yet. Blocking issues:
What I would change:
Net: the release pipeline looks okay, but this PR should be revised before merge because the CI race is not actually removed and K8s E2E has a tag mismatch. |
- Add publish-manifest input to docker-build.yml (default true); single-arch branch callers set it false so the merge job is skipped and the shared bare :SHA tag in GHCR is never written by branch workflows - branch-kubernetes-e2e: retag :SHA-amd64 to :SHA before kind load so Helm's image.tag matches what is loaded in kind containerd - branch-e2e: pass image-tag as :SHA-arm64 to e2e-test so the arch-specific GHCR tag is used directly without depending on the bare tag - bare :SHA in GHCR is now written only by test-gpu.yml (multi-arch build), eliminating the last-writer-wins race across concurrent workflows
a53f726 to
e9968cb
Compare
Thx! Kind tag mismatch, Bare:SHA and --prefer-index=false on single source are done. |
Summary
IMAGE_TAGindocker-build.ymlso each workflow writes to its own registry slot:SHAtag is always a deterministic manifest listbranch-kubernetes-e2e.ymlto pull theamd64-suffixed tag directlyRelated Issue
Fixes #1343
Changes
Three concurrent workflows (Branch Kubernetes E2E, Branch E2E Checks, GPU Test) were all writing to the same bare
:SHAtag. The merge step was gated onplatform_count != 1, so single-arch builds collapsed onto the bare tag and raced with each other.kind loadthen failed when it found a manifest list but only had one arch locally.The fix removes the conditional collapse so every build writes to
:SHA-<arch>, and the merge step always assembles the bare:SHAtag as a proper manifest list.Testing
Checklist